<?php
load_class('TMIS_TableDataGateway');
class Model_Jichu_Product extends TMIS_TableDataGateway {
    var $tableName = 'jichu_product';
    var $primaryKey = 'id';
    var $primaryName = 'proName';

    var $needCreateLog = true;// 需要打日志则加此参数
    var $codeField = 'proCode';// 编号字段
    var $moduleName = '产品档案';// 模块名称

    /**
     * 把数据平铺到数组中
     * Time：2019/10/22 16:54:30
     * @author li
     * @param 参数类型
     * @return 返回值类型
    */
    public function filedValue(& $row, & $filedsAll = array()) {
      if(!$row['kindId']) return false;
      //首先拿到分类和字段的配置
      if(!count($filedsAll)){
        $modelKind = FLEA::getSingleton('Model_Jichu_ProKind');
        $tmp = $modelKind->filedsSingleGroupKind();
        $filedsAll = $tmp;
      }

      //拿到本次数据需要的配置
      $filedSet = $filedsAll[$row['kindId']];

      if(!$filedSet) return false;
      //把所有的数据都处理下
      foreach ($filedSet as $key => & $v) {
        $row[$v['filedKey']] = $row[$v['filed']];
      }

      return true;
      // dump($row);
    }

    //把对象数据处理到另一个对象
    public function filedValue2(& $row, $product ,& $filedsAll = array()) {
      if(!$product['kindId']) return false;
      //首先拿到分类和字段的配置
      if(!count($filedsAll)){
        $modelKind = FLEA::getSingleton('Model_Jichu_ProKind');
        $tmp = $modelKind->filedsSingleGroupKind();
        $filedsAll = $tmp;
      }

      //拿到本次数据需要的配置
      $filedSet = $filedsAll[$product['kindId']];

      if(!$filedSet) {
        // $row = array();
        return false;
      }
      //把所有的数据都处理下
      foreach ($filedSet as $key => & $v) {
        $row[$v['filedKey']] = $product[$v['filed']];
      }

      return true;
      // dump($row);
    }

    //把对象数据处理到另一个对象
    public function filedValue3(& $row = array(), $product , & $filedsAll = array()) {
      if(!$product['kindId']) return false;
      //首先拿到分类和字段的配置
      if(!count($filedsAll)){
        $modelKind = FLEA::getSingleton('Model_Jichu_ProKind');
        $tmp = $modelKind->filedsSingleGroupKind();
        $tmp = $tmp ? $tmp : array();
        // $tmp1 = $modelKind->filedsSingleGroupKind('default');
        // $tmp1 = $tmp1[$product['kindId']] ? $tmp1[$product['kindId']] : array();
        $filedsAll = $tmp;//array_merge( $tmp, $tmp1);
      }

      //拿到本次数据需要的配置
      $filedSet = $filedsAll[$product['kindId']];

      if(!$filedSet) {
        // $row = array();
        return false;
      }
      // dump($tmp);
      //把所有的数据都处理下
      foreach ($filedSet as $key => & $v) {
        $product[$v['filed']] && $row[$v['title']] = $product[$v['filed']];
      }

      return true;
      // dump($row);
    }

    //手持端产品列表使用
    public function filedValue4(& $row = array(), $product , & $filedsAll = array()) {
      if(!$product['kindId']) return false;
      //首先拿到分类和字段的配置
      if(!count($filedsAll)){
        $modelKind = FLEA::getSingleton('Model_Jichu_ProKind');
        $tmp = $modelKind->filedsSingleGroupKind();
        $filedsAll['single'] = $tmp ? $tmp : array();
        $tmp1 = $modelKind->filedsSingleGroupKind('default');
        $filedsAll['default'] = $tmp1 ? $tmp1 : array();
      }

      //拿到本次数据需要的配置
      $_single = $filedsAll['single'][$product['kindId']] ? $filedsAll['single'][$product['kindId']] : array();
      $_default = $filedsAll['default'][$product['kindId']] ? $filedsAll['default'][$product['kindId']] : array();
      $filedSet = array_merge($_single , $_default);

      if(!$filedSet) {
        // $row = array();
        return false;
      }
      // dump($tmp);
      //把所有的数据都处理下
      foreach ($filedSet as $key => & $v) {
        $product[$v['filed']] && $row[$v['title']] = $product[$v['filed']];
      }

      return true;
      // dump($row);
    }

    //组织成通用的展示字段
    function filedOtherFormat($row , $format='string' , $other = '' , & $filedsAll = array()){
      if(!$row['kindId']) return '';
      // dump($filedsAll);exit;
      if(!count($filedsAll)){
        $modelKind = FLEA::getSingleton('Model_Jichu_ProKind');
        $tmp = $modelKind->filedsSingleGroupKind('default');
        $filedsAll = $tmp;
      }

      //拿到本次数据需要的配置
      $filedSet = $filedsAll[$row['kindId']];

      if(!$filedSet) return '';

      //把所有的数据都处理下
      $result = array();
      foreach ($filedSet as $key => & $v) {

        if($format == 'string'){
          $tmp = $v['title'].':'.$row[$v['filed']];
        }else{
          $tmp = '<span class="el-tag el-tag--mini">'.$v['title'].':'.$row[$v['filed']].'</span>';
        }

        $row[$v['filed']] && $result[] = $tmp;
      }
      $res = join(' ',$result);
      return $res;
    }

    /**
     * 获取对应的值,某列的历史值
     * Time：2019/10/23 12:45:04
     * @author li
     * @param 参数类型
     * @return 返回值类型
    */
    function getColumnValues($filed ,$kindId){
      $sql = "SELECT distinct {$filed} as textShow from {$this->tableName} where {$filed}<>'' and kindId='{$kindId}' order by id limit 0,30";
      $list = $this->findBySql($sql);

      $rows = array();
      foreach ($list as $key => $v) {
        $rows[] = array('text'=>$v['textShow'] ,'value'=>$v['textShow']);
      }

      return $rows;
    }

    function getOptions($filed = 'proName',$condition = array()){
        $row = $this->findAll($condition);
        foreach($row as & $v){
          $fileds = explode(',',$filed);
          $tmp = array();
          foreach ($fileds as & $f) {
              $tmp[] = $v[$f] ;
          }
          $text = join('-',$tmp);
          $arr[]=array('value'=>$v[$this->primaryKey],'text'=>$text);
        }
        return $arr;
    }


    /**
     * 更新后处理的函数
     * Time：2019/11/27 09:50:05
     * @author li
     * @param 参数类型
     * @return 返回值类型
    */
    function _afterUpdateDb(& $row , & $oldRow){
      //如果不允许搜图，直接返回布处理图片
      $isSim = FLEA::getAppInf('searchByImage');
      if(!$isSim) return true;

      $oldPic = $oldRow['pic'] ? explode(',' ,$oldRow['pic']) : array();
      $newPic = $row['pic'] ? explode(',' ,$row['pic']) : array();
      if($newPic && strval($row['isSim']) == '1'){
        //如果产品之前是禁止上传，则这里需要全部上传图片
        if(strval($oldRow['isSim']) == '0'){
          $_oldPic = array();
        }else{
          $_oldPic = $oldPic;
        }

        $modelImg = FLEA::getSingleton('Model_Jichu_Image');
        foreach ($newPic as & $img) {
          if(!in_array($img, $_oldPic) ){
            $img > 0 && $modelImg->uploadSim(array('id'=>$img));
          }
        }
      }

      //判断是否需要删除图片
      if($oldPic){
        $class = FLEA::getSingleton('Controller_Jichu_Image');
        foreach ($oldPic as & $img) {
          if(!in_array($img, $newPic)){
            $class->_removeImg($img);
          }
        }
      }
    }

    /**
     * 上传成功之后需要处理的函数
     * Time：2019/11/26 14:05:43
     * @author li
     * @param 参数类型
     * @return 返回值类型
    */
    function _afterCreateDb(& $row) {
      //如果不允许搜图，直接返回布处理图片
      $isSim = FLEA::getAppInf('searchByImage');
      if(!$isSim) return true;

      if($row['pic'] && strval($row['isSim']) == '1'){
        $modelImg = FLEA::getSingleton('Model_Jichu_Image');
        $imageId = explode(',' ,$row['pic']);
        foreach ($imageId as & $img) {
          $img > 0 && $modelImg->uploadSim(array('id'=>$img));
        }
      }
    }
}
?>